package pe.com.bn.sach.dao.impl;
import pe.com.bn.sach.common.Constante;
import java.sql.SQLException;
import java.util.ArrayList;

import java.util.Hashtable;
import java.util.List;
import java.util.Map;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.log4j.Logger;

import com.ibatis.sqlmap.client.SqlMapClient;

import pe.com.bn.sach.dao.ExpedienteDAO;
import pe.com.bn.sach.domain.Bnchf05Observaciones;
import pe.com.bn.sach.domain.Bnchf13Expediente;
import pe.com.bn.sach.domain.Bnchf33PrestamoExpediente;
import pe.com.bn.sach.domain.Bnchf35Inmueble;
import pe.com.bn.sach.domain.Bnchf02Cliente;
import pe.com.bn.sach.domain.Bnchf23ExpDetFamAdic;
import pe.com.bn.sach.domain.Bnchf23ExpDetTitAdic;
import pe.com.bn.sach.domain.Bnchf23ExpFamCtaPeriodo;
import pe.com.bn.sach.domain.Bnchf23ExpFamCuentas;
import pe.com.bn.sach.domain.Bnchf23ExpIngrFamAdic;
import pe.com.bn.sach.domain.Bnchf23ExpIngrTitAdic;
import pe.com.bn.sach.domain.Bnchf23ExpIngresoFamiliar;
import pe.com.bn.sach.domain.Bnchf23ExpIngresoTitular;
import pe.com.bn.sach.domain.Bnchf23ExpTitCtaPeriodo;
import pe.com.bn.sach.domain.Bnchf23ExpTitCuentas;

import pe.com.bn.sach.domain.Bnchf41UnidadProc;
import pe.com.bn.sach.domain.Bnchf42Actividad;
import pe.com.bn.sach.domain.Bnchf51BandejaTrab;
import pe.com.bn.sach.domain.Bnchf51VersionExpediente;
import pe.com.bn.sach.domain.Bnchf52Movimiento;

import pe.com.bn.sach.domain.Bnchf54ParametroProducto;
import pe.com.bn.sach.domain.Bnchf65ExpCorrelativo;
import pe.com.bn.sach.domain.Bnchf67DireccionPers;
import pe.com.bn.sach.domain.Bnchf68UsrAdmAgenc;
import pe.com.bn.sach.domain.BnchfReporte;
import pe.com.bn.sach.expediente.controller.ExpedienteController;
import pe.com.bn.sach.seguridad.DatosSesion;

import pe.com.bn.sach.common.Util;
public class ExpedienteImpl implements ExpedienteDAO {
 
	protected SqlMapClient sqlMap = null;	 
	public void setSqlMap(SqlMapClient sqlMap) {
		this.sqlMap = sqlMap;  
	}	 
	/** Logger for this class and subclasses */
    private static Logger log = Logger.getLogger(ExpedienteController.class.getName());
    protected final Log logger = LogFactory.getLog(getClass());
    
    //Hashtable result = new Hashtable();
    
    public 	String verificarProducto(Map map){    	
    	Hashtable result = new Hashtable();
    	String mensaje="";
    	
    	
    	
    	try {
    		
    		String paramDocumento=(String)sqlMap.queryForObject("sqlExpediente.paramDocumentTitular",map);    			
    		String parametroProducto=(String)sqlMap.queryForObject("sqlExpediente.parametroProducto",map);    		
    		String parametroTasa=(String)sqlMap.queryForObject("sqlExpediente.parametroTasaInteres",map);
    		String parametroFam=(String)sqlMap.queryForObject("sqlExpediente.paramReqFam",map);
    		String parametroTit=(String)sqlMap.queryForObject("sqlExpediente.paramReqTit",map);
    		String parametroReq=(String)sqlMap.queryForObject("sqlExpediente.paramReqDesgrav",map);
    		
    		if(paramDocumento==null)paramDocumento="0";    			
    		if(parametroProducto==null)parametroProducto="0";
    		if(parametroTasa==null)parametroTasa="0";    		
    		if(parametroFam==null)parametroFam="0";
    		if(parametroTit==null)parametroTit="0";
    		if(parametroReq==null)parametroReq="0";    		
    		if(Integer.parseInt(paramDocumento+"")!=1 || Integer.parseInt(paramDocumento+"")==0)mensaje=mensaje+"|Parametro Documento Titular";
    		if(Integer.parseInt(parametroProducto+"")!=1 || Integer.parseInt(parametroProducto+"")==0 )mensaje=mensaje+"|Parametro Producto";
    		if(Integer.parseInt(parametroTasa+"")<4 || Integer.parseInt(parametroTasa+"")==0  )mensaje=mensaje+"|Parametro Tasa Interes";
    		if(Integer.parseInt(parametroFam+"")!=1	|| Integer.parseInt(parametroFam+"")==0	)mensaje=mensaje+"|Parametro Familiar";
    		if(Integer.parseInt(parametroTit+"")!=1	|| Integer.parseInt(parametroTit+"")==0	)mensaje=mensaje+"|Parametro Titular";
    		if(Integer.parseInt(parametroReq+"")!=4	|| Integer.parseInt(parametroReq+"")==0	)mensaje=mensaje+"|Parametro requesitos Desgravamen";
    		
		} catch (Exception e) {
			// TODO: handle exception
		}

    	return doitString(mensaje);
    }
    
	  public String doitString(String s3) {
	     // String s3 = "Falta:|Parametro Documento Titular|Parametro Producto|Parametro Tasa Interes|Parametro Familiar|Parametro Titular|Parametro requesitos Desgravamen";
	  	  if(s3.equals(""))return "";
	  	  
	      String [] temp = null;
	      temp = s3.split("\\|");
	      return  formatMensaje(temp);
	  }
	  public String formatMensaje(String []s) {
	    String mensaje="";
	    String replace="";
	    
	   
	    if(s.length>0)
	    for (int i = 0 ; i < s.length ; i++) {	       
	       if(i!=0)
	       replace=",";
	       if(i==(s.length-1))
	       replace=".";
	       mensaje=mensaje+s[i]+replace;
	    }
	    
	   
	    
	    return mensaje;
	  }

	  
    public String verificaConyugeActivo(Bnchf13Expediente bnchf13Expediente) throws Exception{
	
		String id=null;
		List li=sqlMap.queryForList("sqlExpediente.listarExpediente",bnchf13Expediente);
		Bnchf13Expediente Bnchf13Expediente1=new Bnchf13Expediente();
		
		
		Bnchf13Expediente1=(Bnchf13Expediente)li.get(0);
		
		
	       try {      
	    	    id = (String)sqlMap.queryForObject("sqlExpediente.verificaConyugeActivo",Bnchf13Expediente1);	    	    
	            if(id.equals("0")){
	            	id=null;
	            }  
	            return id;
	        } catch (Exception e) {
	        	 id=null;
	        	 return id;
	        }
	}
	//get fechas
	public List  getFechas()throws Exception{
		
		List fechasLis=new ArrayList();
		Bnchf13Expediente expedienteBean=new Bnchf13Expediente();
		expedienteBean=(Bnchf13Expediente)sqlMap.queryForList("sqlExpediente.getFechas").get(0);
		Bnchf13Expediente expedienteBeann=new Bnchf13Expediente();
		expedienteBeann.setMes(expedienteBean.getMes6());
		fechasLis.add(expedienteBeann);
		expedienteBeann=new Bnchf13Expediente();		
		expedienteBeann.setMes(expedienteBean.getMes5());
		fechasLis.add(expedienteBeann);
		expedienteBeann=new Bnchf13Expediente();
		expedienteBeann.setMes(expedienteBean.getMes4());
		fechasLis.add(expedienteBeann);
		expedienteBeann=new Bnchf13Expediente();
		expedienteBeann.setMes(expedienteBean.getMes3());
		fechasLis.add(expedienteBeann);
		expedienteBeann=new Bnchf13Expediente();
		expedienteBeann.setMes(expedienteBean.getMes2());
		fechasLis.add(expedienteBeann);
		expedienteBeann=new Bnchf13Expediente();
		expedienteBeann.setMes(expedienteBean.getMes1());
		fechasLis.add(expedienteBeann);
		return fechasLis;
		
	}
	
	public String ActualizarEstadoCivil(Long idCliente,String usuario,String idExpediente) throws Exception{
		String id=null;
		Bnchf02Cliente bnchf02Cliente=new Bnchf02Cliente();
		Bnchf13Expediente bnchf13Expediente=new Bnchf13Expediente();
		bnchf13Expediente.setF13IdUsuaModi(usuario);
		bnchf13Expediente.setF13IdExpediente(idExpediente);
		bnchf13Expediente.getBnchf02Cliente().setF02IdCliente(idCliente);
		 try {  
	        id = (String)sqlMap.queryForObject("sqlExpediente.verificaConyugeActivo",bnchf13Expediente);
            if(id.equals("0")){
            	id=null;
            }
        } catch (Exception e) {
        	logger.error(""+e);
        	 id=null;
        	 
        }       
        if(id!=null){        	
        	if(Integer.parseInt(""+id)>0){
        		String estadoCivil = (String)sqlMap.queryForObject("sqlExpediente.estadoCivildelCliente",bnchf13Expediente);
        		if(estadoCivil!=null)
        		bnchf13Expediente.setF13EstdCivil(new Long(estadoCivil));        		
        		bnchf13Expediente.setF13IdUsuaModi(usuario);
        		bnchf13Expediente.setF13IdExpediente(idExpediente);
        		if(estadoCivil!=null)
        		sqlMap.update("sqlExpediente.ActualizarEstadoCivilClienteExpediente",bnchf13Expediente);        		
        	}
        }
        	

		
	    return id;
	}
	/****** ***  cuentas INGRESOS FAMILIARES *****************/
	
	public String VerificasiExisteCampo(Bnchf23ExpFamCuentas Bnchf23ExpFamCuentas,Long idPersonaCony) throws Exception{
		String id=null;
		Bnchf02Cliente bnchf02Cliente=new Bnchf02Cliente();
		bnchf02Cliente.getBnchf01Persona().setF01IdPersona(idPersonaCony);
	       try {      
	    	    id = (String)sqlMap.queryForObject("sqlExpFamCuentas.VerificasiExisteCampo",Bnchf23ExpFamCuentas);
	    	    if(id==null){// codigo de cliente - Conyuge 
	    	    	
	    	    	id = (String)sqlMap.queryForObject("sqlCliente.getCodCliente",bnchf02Cliente);	
	    	    }
	        } catch (Exception e) {
	            throw new Exception("Error en generar codigo expediente: " + e);
	           
	        }
        return id;
	}

	
	public void TerminarExpediente(Bnchf13Expediente bnchf13Expediente)throws Exception{

		try{
			sqlMap.startTransaction();
			sqlMap.update("sqlExpediente.CambiarEstadoExpediente",bnchf13Expediente);
			sqlMap.commitTransaction();
		}catch(Exception e){
			e.printStackTrace();
			throw e;
		}finally{
			sqlMap.endTransaction();
		}
		
		
	}
	public void CambiarEstadoExpediente(Bnchf13Expediente bnchf13Expediente)throws Exception{
		
		try {
			sqlMap.startTransaction();
			sqlMap.update("sqlExpediente.CambiarEstadoExpediente",bnchf13Expediente);
			sqlMap.commitTransaction();
						
		} catch (Exception e) {
			e.printStackTrace();
			throw e;
			// TODO: handle exception
		}finally{
			sqlMap.endTransaction();	
		}

	}
	//getDatosCabeceraPrecalificacion
	public Bnchf33PrestamoExpediente getDatosCabeceraPrecalificacion(String idExpediente)throws Exception{
		Bnchf33PrestamoExpediente bnchf33PrestamoExpediente=new Bnchf33PrestamoExpediente();
		bnchf33PrestamoExpediente.setF33IdExpediente(""+idExpediente);
		return (Bnchf33PrestamoExpediente)sqlMap.queryForList("sqlExpediente.getDatosCabeceraPrecalificacion",bnchf33PrestamoExpediente).get(0);
	}  
	
	/*
	 encontrarMovExpediente
	 */ 
	
	public List  listaRoles(Bnchf68UsrAdmAgenc bnchf68UsrAdmAgenc)throws Exception{
		return sqlMap.queryForList("sqlExpediente.listRoles",bnchf68UsrAdmAgenc); 
	}
	
	// Bnchf52Movimiento
	
	//bnchf23ExpDetFamAdic
	
	public List  ExpDetFamAdicList(Bnchf23ExpDetFamAdic bnchf23ExpDetFamAdic)throws Exception{
		
		return sqlMap.queryForList("sqlExpDetFamAdic.encontrarExpDetFamAdic",bnchf23ExpDetFamAdic); 
	}
	
	//encontrar Bnchf23ExpFamCtaPeriodo ingresos del conyuge 
	public List  ExpFamCtaPeriodoList(Bnchf23ExpFamCtaPeriodo bnchf23ExpFamCtaPeriodo)throws Exception{
		 
		return sqlMap.queryForList("sqlExpFamCtaPeriodo.encontrarExpFamCtaPeriodo",bnchf23ExpFamCtaPeriodo); 
	}
	
	//Bnchf23ExpFamCuentas
	public List  ExpFamCuentasList(Bnchf23ExpFamCuentas Bnchf23ExpFamCuentas)throws Exception{
		
		return sqlMap.queryForList("sqlExpFamCuentas.encontrarExpFamCuentas",Bnchf23ExpFamCuentas);
	}
	//Bnchf23Bnchf23ExpIngresoFamiliar
	/********FAMILIAR INI ******/
	//datos del ingreso familiar
	public Bnchf23ExpIngresoFamiliar ExpIngresoFamiliar(Bnchf23ExpIngresoFamiliar bnchf23ExpIngresoFamiliar)throws Exception{
		return (Bnchf23ExpIngresoFamiliar)sqlMap.queryForList("sqlExpIngresoFamiliar.encontrarExpIngresoFamiliar",bnchf23ExpIngresoFamiliar).get(0);
		
	}
	 
	//Bnchf23ExpIngrFamAdic
	public List  ExpIngrFamAdicList(Bnchf23ExpIngrFamAdic bnchf23ExpIngrFamAdic)throws Exception{
		
		return sqlMap.queryForList("sqlExpIngrFamAdic.encontrarExpIngrFamAdic",bnchf23ExpIngrFamAdic);
	}
	
	
	public List bnchf42ActividadList( Bnchf42Actividad	bnchf42Actividad) throws Exception{
		return sqlMap.queryForList("sqlExpediente.ListActividadResult",bnchf42Actividad);
	}
	public List bnchf41UnidadProcList(Bnchf41UnidadProc bnchf41UnidadProc)throws Exception{
		// f41Stdo
		return sqlMap.queryForList("sqlExpediente.ListUnidadProcResult",bnchf41UnidadProc);
	}

	public List ListUnidadProcFlujo(Bnchf41UnidadProc bnchf41UnidadProc)throws Exception{
		return sqlMap.queryForList("sqlExpediente.ListUnidadProcFlujo",bnchf41UnidadProc);
	}
	
	public String  ActualizarIngresoConyugeOtro(
			Bnchf13Expediente bnchf13Expediente,
			Bnchf23ExpIngresoFamiliar bnchf23ExpIngresoFamiliar,	
			List bnchf23ExpIngrFamAdicList,			
			List bnchf23ExpDetFamAdicList,
			Bnchf67DireccionPers bnchf67DireccionPers	
		)throws Exception{
		boolean exito=false;
		
			
		
		
		try {
			sqlMap.startTransaction();
			
			// ini
			bnchf23ExpIngresoFamiliar.getId().getBnchf13Expediente().setF13IdExpediente(bnchf13Expediente.getF13IdExpediente());
			bnchf23ExpIngresoFamiliar.setF23IdUsuaCrea(bnchf13Expediente.getF13IdUsuaCrea());
			String qryResult=(String)sqlMap.queryForObject("sqlExpIngresoFamiliar.VerificasiExisteCampo", bnchf23ExpIngresoFamiliar);		
			Bnchf13Expediente Bnchf13Expediente=new Bnchf13Expediente();
			//id.bnchf23ExpIngrFamAdic.id.bnchf23ExpIngresoFamiliar.id.bnchf13Expediente.f13IdExpediente	  		
			Bnchf23ExpDetFamAdic bnchf23ExpDetFamAdic=new Bnchf23ExpDetFamAdic();
			bnchf23ExpDetFamAdic.getId().getBnchf23ExpIngrFamAdic().getId().getBnchf23ExpIngresoFamiliar().getId().getBnchf13Expediente().setF13IdExpediente(bnchf13Expediente.getF13IdExpediente());
			bnchf23ExpDetFamAdic.getId().getBnchf23ExpIngrFamAdic().getId().getBnchf23ExpIngresoFamiliar().getId().getBnchf01Persona().setF01IdPersona(bnchf23ExpIngresoFamiliar.getId().getBnchf01Persona().getF01IdPersona());
			sqlMap.delete("sqlExpDetFamAdic.EliminarExpDetFamAdic",bnchf23ExpDetFamAdic);			
			//id.bnchf23ExpIngresoFamiliar.id.bnchf13Expediente.f13IdExpediente
			Bnchf23ExpIngrFamAdic bnchf23ExpIngrFamAdic=new Bnchf23ExpIngrFamAdic();
			bnchf23ExpIngrFamAdic.getId().getBnchf23ExpIngresoFamiliar().getId().getBnchf13Expediente().setF13IdExpediente(bnchf13Expediente.getF13IdExpediente());
			bnchf23ExpIngrFamAdic.getId().getBnchf23ExpIngresoFamiliar().getId().getBnchf01Persona().setF01IdPersona(bnchf23ExpIngresoFamiliar.getId().getBnchf01Persona().getF01IdPersona());
			sqlMap.delete("sqlExpIngrFamAdic.EliminarIngrFamAdic",bnchf23ExpIngrFamAdic);
			// fin
			Bnchf23ExpFamCuentas bnchf23ExpFamCuentas=new Bnchf23ExpFamCuentas();
			 bnchf23ExpIngrFamAdic=new Bnchf23ExpIngrFamAdic();
			Bnchf23ExpTitCtaPeriodo bnchf23ExpTitCtaPeriodo=new Bnchf23ExpTitCtaPeriodo();
		
			if(qryResult==null||qryResult.equals("0") ){
					sqlMap.insert("sqlExpIngresoFamiliar.GuardaExpIngresoFamiliar",bnchf23ExpIngresoFamiliar);	
				}else{ 
	 				sqlMap.update("sqlExpIngresoFamiliar.ActualizaExpIngresoFamiliar",bnchf23ExpIngresoFamiliar);
				}
		
		
			for(int i = 0; i < bnchf23ExpIngrFamAdicList.size(); i++){
				bnchf23ExpIngrFamAdic=new Bnchf23ExpIngrFamAdic();
				bnchf23ExpIngrFamAdic=(Bnchf23ExpIngrFamAdic)bnchf23ExpIngrFamAdicList.get(i); 
				bnchf23ExpIngrFamAdic.getId().getBnchf23ExpIngresoFamiliar().getId().getBnchf13Expediente().setF13IdExpediente(bnchf13Expediente.getF13IdExpediente());
				bnchf23ExpIngrFamAdic.getId().getBnchf23ExpIngresoFamiliar().getId().getBnchf01Persona().setF01IdPersona(bnchf23ExpIngresoFamiliar.getId().getBnchf01Persona().getF01IdPersona());
				bnchf23ExpIngrFamAdic.setF23IdUsuaCrea(bnchf13Expediente.getF13IdUsuaCrea());
				bnchf23ExpIngrFamAdic.getId().getBnchf23ExpIngresoFamiliar().getId().getBnchf01Persona().setF01IdPersona(bnchf23ExpIngresoFamiliar.getId().getBnchf01Persona().getF01IdPersona());
				bnchf23ExpIngrFamAdic.setF23IdUsuaCrea(bnchf13Expediente.getF13IdUsuaCrea());
				try {
				 	sqlMap.insert("sqlExpIngrFamAdic.GuardaExpIngrFamAdic",bnchf23ExpIngrFamAdic);
			 		
				} catch (Exception e) { 
					logger.error(" "+e);
					// TODO: handle exception
				}
				
				}
			
				Bnchf23ExpDetFamAdic bnchf23ExpDetFamAdic1=new Bnchf23ExpDetFamAdic();
			
				for (int i = 0; i < bnchf23ExpDetFamAdicList.size(); i++) 
				{
				bnchf23ExpDetFamAdic1=new Bnchf23ExpDetFamAdic();
				bnchf23ExpDetFamAdic1=(Bnchf23ExpDetFamAdic)bnchf23ExpDetFamAdicList.get(i);				
				bnchf23ExpDetFamAdic1.getId().setF23IdDetalle(new Long(""+(i+1)));
				bnchf23ExpDetFamAdic1.getId().getBnchf23ExpIngrFamAdic().getId().getBnchf23ExpIngresoFamiliar().getId().getBnchf13Expediente().setF13IdExpediente(bnchf13Expediente.getF13IdExpediente());
				bnchf23ExpDetFamAdic1.getId().getBnchf23ExpIngrFamAdic().getId().getBnchf23ExpIngresoFamiliar().getId().getBnchf01Persona().setF01IdPersona(bnchf23ExpIngresoFamiliar.getId().getBnchf01Persona().getF01IdPersona());
				bnchf23ExpDetFamAdic1.setF23IdUsuaCrea(bnchf13Expediente.getF13IdUsuaCrea()); 
				sqlMap.insert("sqlExpDetFamAdic.GuardaExpDetFamAdic",bnchf23ExpDetFamAdic1);
				}
				if(bnchf67DireccionPers.getF67DptoDirecc()!=null)
				if((bnchf67DireccionPers.getF67DptoDirecc().length()==4)||(bnchf67DireccionPers.getF67DptoDirecc().length()==5))bnchf67DireccionPers.setF67DptoDirecc(null);
				
				if(bnchf67DireccionPers.getF67ProvDirecc()!=null)					
				if((bnchf67DireccionPers.getF67ProvDirecc().length()==4)||(bnchf67DireccionPers.getF67ProvDirecc().length()==5))bnchf67DireccionPers.setF67ProvDirecc(null);
				
				if(bnchf67DireccionPers.getF67DistriDirecc()!=null)
				if((bnchf67DireccionPers.getF67DistriDirecc().length()==4)||(bnchf67DireccionPers.getF67DistriDirecc().length()==5))bnchf67DireccionPers.setF67DistriDirecc(null);
				
				bnchf67DireccionPers.getId().setF67IdDirecc(new Long(NextDireccionPer(bnchf67DireccionPers)));
				bnchf67DireccionPers.setF67IdUsuaCrea(bnchf13Expediente.getF13IdUsuaCrea());
				
				String  id="";
				try {			
					
					id=(String)sqlMap.queryForObject("sqlExpediente.EncontrarDireccionPer",bnchf67DireccionPers);
					
				} catch (Exception e) {
					logger.error("	Exception	"+e);
			
					// TODO: handle exception
					id=null;
				}
			
				if(id==null){
					
					
					sqlMap.insert("sqlExpediente.GuardaDireccionPer",bnchf67DireccionPers);
				}else{
					
					bnchf67DireccionPers.getId().setF67IdDirecc(new Long(""+id));
					sqlMap.update("sqlExpediente.ActualizarDireccionPer",bnchf67DireccionPers);
				}
				
				
				sqlMap.update("sqlExpediente.ActualizarExpedienteConsideraFamiliar",bnchf13Expediente);
				sqlMap.commitTransaction();  
		} catch (Exception e) {
			e.printStackTrace();
			throw e;
		}finally{
			sqlMap.endTransaction();
		}
	
		return "";
	}

	public String  ActualizarIngresoConyugeOtroNO(
			Bnchf13Expediente bnchf13Expediente,
			Bnchf23ExpIngresoFamiliar bnchf23ExpIngresoFamiliar,	
			List bnchf23ExpIngrFamAdicList,			
			List bnchf23ExpDetFamAdicList,
			Bnchf67DireccionPers bnchf67DireccionPers	
		)throws Exception{

		boolean exito=false;
		bnchf23ExpIngresoFamiliar.getId().getBnchf13Expediente().setF13IdExpediente(bnchf13Expediente.getF13IdExpediente());
		bnchf23ExpIngresoFamiliar.setF23IdUsuaCrea(bnchf13Expediente.getF13IdUsuaCrea());
		////String qryResult=(String)sqlMap.queryForObject("sqlExpIngresoFamiliar.VerificasiExisteCampo", bnchf23ExpIngresoFamiliar);		

			bnchf67DireccionPers=vacioBean(bnchf67DireccionPers);
			
			try{
				sqlMap.startTransaction();
				
				
				Bnchf13Expediente Bnchf13Expediente=new Bnchf13Expediente();
				//id.bnchf23ExpIngrFamAdic.id.bnchf23ExpIngresoFamiliar.id.bnchf13Expediente.f13IdExpediente	  		
				Bnchf23ExpDetFamAdic bnchf23ExpDetFamAdic=new Bnchf23ExpDetFamAdic();
				bnchf23ExpDetFamAdic.getId().getBnchf23ExpIngrFamAdic().getId().getBnchf23ExpIngresoFamiliar().getId().getBnchf13Expediente().setF13IdExpediente(bnchf13Expediente.getF13IdExpediente());
				bnchf23ExpDetFamAdic.getId().getBnchf23ExpIngrFamAdic().getId().getBnchf23ExpIngresoFamiliar().getId().getBnchf01Persona().setF01IdPersona(bnchf23ExpIngresoFamiliar.getId().getBnchf01Persona().getF01IdPersona());
				
				sqlMap.delete("sqlExpDetFamAdic.EliminarExpDetFamAdic",bnchf23ExpDetFamAdic);
				//id.bnchf23ExpIngresoFamiliar.id.bnchf13Expediente.f13IdExpediente
				Bnchf23ExpIngrFamAdic bnchf23ExpIngrFamAdic=new Bnchf23ExpIngrFamAdic();
				bnchf23ExpIngrFamAdic.getId().getBnchf23ExpIngresoFamiliar().getId().getBnchf13Expediente().setF13IdExpediente(bnchf13Expediente.getF13IdExpediente());
				bnchf23ExpIngrFamAdic.getId().getBnchf23ExpIngresoFamiliar().getId().getBnchf01Persona().setF01IdPersona(bnchf23ExpIngresoFamiliar.getId().getBnchf01Persona().getF01IdPersona());
				
				sqlMap.delete("sqlExpIngrFamAdic.EliminarIngrFamAdic",bnchf23ExpIngrFamAdic);
				
				sqlMap.delete("sqlExpIngresoFamiliar.EliminarIngresoFamiliar",bnchf23ExpIngresoFamiliar);								
				sqlMap.update("sqlExpediente.ActualizarDireccionPer",bnchf67DireccionPers);
				
				sqlMap.update("sqlExpediente.ActualizarExpedienteConsideraFamiliar",bnchf13Expediente);				
				sqlMap.commitTransaction();
			}catch(Exception e){
				e.printStackTrace();
				throw e;
			}finally{
				sqlMap.endTransaction();
			}
		return "";
	}
    public Bnchf67DireccionPers vacioBean (Bnchf67DireccionPers  bnchf67DireccionPers){
    	bnchf67DireccionPers.setF67DptoDirecc(null);
		bnchf67DireccionPers.setF67ProvDirecc(null);
		bnchf67DireccionPers.setF67DistriDirecc(null);
		bnchf67DireccionPers.setF67TpoZona(null);
		bnchf67DireccionPers.setF67NomZona(null);
		bnchf67DireccionPers.setF67TpoVia(null);
		bnchf67DireccionPers.setF67NomVia(null);
		bnchf67DireccionPers.setF67TpoExt(null);
		bnchf67DireccionPers.setF67NomExt(null);
		bnchf67DireccionPers.setF67TpoInt(null);
		bnchf67DireccionPers.setF67NomInt(null);
		bnchf67DireccionPers.setF67Piso(null);
		return bnchf67DireccionPers;
    }
	public String  ActualizarIngresoConyugeBN(
			Bnchf13Expediente bnchf13Expediente,
			Bnchf23ExpIngresoFamiliar bnchf23ExpIngresoFamiliar,			
			List bnchf23ExpFamCuentasList ,
			List bnchf23ExpIngrFamAdicList,
			List bnchf23ExpFamCtaPeriodoList,
			List bnchf23ExpDetFamAdicList,
			Bnchf67DireccionPers bnchf67DireccionPers	
		)throws Exception{
		
		boolean exito=false;
		bnchf23ExpIngresoFamiliar.getId().getBnchf13Expediente().setF13IdExpediente(bnchf13Expediente.getF13IdExpediente());
		bnchf23ExpIngresoFamiliar.setF23IdUsuaCrea(bnchf13Expediente.getF13IdUsuaCrea());
		
	
		try {
			sqlMap.startTransaction();
				
				String qryResult=(String)sqlMap.queryForObject("sqlExpIngresoFamiliar.VerificasiExisteCampo", bnchf23ExpIngresoFamiliar);
				Bnchf23ExpFamCtaPeriodo bnchf23ExpFamCtaPeriodo=new Bnchf23ExpFamCtaPeriodo();
			
				Bnchf13Expediente Bnchf13Expediente=new Bnchf13Expediente();
				//id.bnchf23ExpIngrFamAdic.id.bnchf23ExpIngresoFamiliar.id.bnchf13Expediente.f13IdExpediente	  		
				Bnchf23ExpDetFamAdic bnchf23ExpDetFamAdic=new Bnchf23ExpDetFamAdic();
				bnchf23ExpDetFamAdic.getId().getBnchf23ExpIngrFamAdic().getId().getBnchf23ExpIngresoFamiliar().getId().getBnchf13Expediente().setF13IdExpediente(bnchf13Expediente.getF13IdExpediente());
				bnchf23ExpDetFamAdic.getId().getBnchf23ExpIngrFamAdic().getId().getBnchf23ExpIngresoFamiliar().getId().getBnchf01Persona().setF01IdPersona(bnchf23ExpIngresoFamiliar.getId().getBnchf01Persona().getF01IdPersona());
				sqlMap.delete("sqlExpDetFamAdic.EliminarExpDetFamAdic",bnchf23ExpDetFamAdic);
				//id.bnchf23ExpIngrFamAdic.id.bnchf23ExpIngresoFamiliar.id.bnchf13Expediente.f13IdExpediente
				bnchf23ExpFamCtaPeriodo.getId().setF23IdExpediente(bnchf13Expediente.getF13IdExpediente());
				bnchf23ExpFamCtaPeriodo.getId().setF23IdPersona(bnchf23ExpIngresoFamiliar.getId().getBnchf01Persona().getF01IdPersona());
				//id.f23IdExpediente
				sqlMap.delete("sqlExpFamCtaPeriodo.EliminarExpFamCtaPeriodo",bnchf23ExpFamCtaPeriodo);	 
				//id.bnchf23ExpIngresoFamiliar.id.bnchf13Expediente.f13IdExpediente
				Bnchf23ExpFamCuentas bnchf23ExpFamCuentas=new Bnchf23ExpFamCuentas();
				bnchf23ExpFamCuentas.getId().getBnchf23ExpIngresoFamiliar().getId().getBnchf13Expediente().setF13IdExpediente(bnchf13Expediente.getF13IdExpediente());
				bnchf23ExpFamCuentas.getId().setF23IdPersona(bnchf23ExpIngresoFamiliar.getId().getBnchf01Persona().getF01IdPersona());			
				
				sqlMap.delete("sqlExpFamCuentas.EliminarExpFamCuentas",bnchf23ExpFamCuentas);
				//id.bnchf23ExpIngresoFamiliar.id.bnchf13Expediente.f13IdExpediente
				Bnchf23ExpIngrFamAdic bnchf23ExpIngrFamAdic=new Bnchf23ExpIngrFamAdic();
				bnchf23ExpIngrFamAdic.getId().getBnchf23ExpIngresoFamiliar().getId().getBnchf13Expediente().setF13IdExpediente(bnchf13Expediente.getF13IdExpediente());
				bnchf23ExpIngrFamAdic.getId().getBnchf23ExpIngresoFamiliar().getId().getBnchf01Persona().setF01IdPersona(bnchf23ExpIngresoFamiliar.getId().getBnchf01Persona().getF01IdPersona());
				sqlMap.delete("sqlExpIngrFamAdic.EliminarIngrFamAdic",bnchf23ExpIngrFamAdic);
		
				bnchf23ExpFamCuentas=new Bnchf23ExpFamCuentas();
				bnchf23ExpIngrFamAdic=new Bnchf23ExpIngrFamAdic();
				Bnchf23ExpTitCtaPeriodo bnchf23ExpTitCtaPeriodo=new Bnchf23ExpTitCtaPeriodo();
				if(qryResult==null||qryResult.equals("0") ){
					sqlMap.insert("sqlExpIngresoFamiliar.GuardaExpIngresoFamiliar",bnchf23ExpIngresoFamiliar);	
				}else{ 
	 				sqlMap.update("sqlExpIngresoFamiliar.ActualizaExpIngresoFamiliar",bnchf23ExpIngresoFamiliar);
				}
				
				
				for (int i = 0; i < bnchf23ExpFamCuentasList.size(); i++) {		
					bnchf23ExpFamCuentas=new Bnchf23ExpFamCuentas();
					bnchf23ExpFamCuentas=(Bnchf23ExpFamCuentas)bnchf23ExpFamCuentasList.get(i);
					bnchf23ExpFamCuentas.getId().setF13IdExpediente(bnchf13Expediente.getF13IdExpediente());
					bnchf23ExpFamCuentas.getId().setF23IdPersona(bnchf23ExpIngresoFamiliar.getId().getBnchf01Persona().getF01IdPersona());
					      
					bnchf23ExpFamCuentas.setF23IdUsuaCrea(bnchf13Expediente.getF13IdUsuaCrea());
					sqlMap.insert("sqlExpFamCuentas.GuardaExpFamCuentas",bnchf23ExpFamCuentas);	
			  	}
				
				for(int i = 0; i < bnchf23ExpIngrFamAdicList.size(); i++){  
					bnchf23ExpIngrFamAdic=new Bnchf23ExpIngrFamAdic();
					bnchf23ExpIngrFamAdic=(Bnchf23ExpIngrFamAdic)bnchf23ExpIngrFamAdicList.get(i); 
					bnchf23ExpIngrFamAdic.getId().getBnchf23ExpIngresoFamiliar().getId().getBnchf13Expediente().setF13IdExpediente(bnchf13Expediente.getF13IdExpediente());
					bnchf23ExpIngrFamAdic.getId().getBnchf23ExpIngresoFamiliar().getId().getBnchf01Persona().setF01IdPersona(bnchf23ExpIngresoFamiliar.getId().getBnchf01Persona().getF01IdPersona());
					bnchf23ExpIngrFamAdic.setF23IdUsuaCrea(bnchf13Expediente.getF13IdUsuaCrea());
					bnchf23ExpIngrFamAdic.getId().getBnchf23ExpIngresoFamiliar().getId().getBnchf01Persona().setF01IdPersona(bnchf23ExpIngresoFamiliar.getId().getBnchf01Persona().getF01IdPersona());
					bnchf23ExpIngrFamAdic.setF23IdUsuaCrea(bnchf13Expediente.getF13IdUsuaCrea());
					sqlMap.insert("sqlExpIngrFamAdic.GuardaExpIngrFamAdic",bnchf23ExpIngrFamAdic);
				} 
				
				
				
				for (int i = 0; i < bnchf23ExpFamCtaPeriodoList.size(); i++) {				
					bnchf23ExpFamCtaPeriodo=new Bnchf23ExpFamCtaPeriodo();				
					bnchf23ExpFamCtaPeriodo=(Bnchf23ExpFamCtaPeriodo)bnchf23ExpFamCtaPeriodoList.get(i);				
					bnchf23ExpFamCtaPeriodo.setF23IdUsuaCrea(bnchf13Expediente.getF13IdUsuaCrea());				
					bnchf23ExpFamCtaPeriodo.getId().setF23IdDetalle(new Long(""+(i+1)));				
					bnchf23ExpFamCtaPeriodo.getId().setF23IdExpediente(bnchf13Expediente.getF13IdExpediente());
					bnchf23ExpFamCtaPeriodo.getId().setF23IdPersona(bnchf23ExpIngresoFamiliar.getId().getBnchf01Persona().getF01IdPersona());
					sqlMap.insert("sqlExpFamCtaPeriodo.GuardaExpFamCtaPeriodo",bnchf23ExpFamCtaPeriodo);	
					}			
					Bnchf23ExpDetFamAdic bnchf23ExpDetFamAdic1=new Bnchf23ExpDetFamAdic();
		
					for (int i = 0; i < bnchf23ExpDetFamAdicList.size(); i++) 
					{
					
					bnchf23ExpDetFamAdic1=new Bnchf23ExpDetFamAdic();	
					bnchf23ExpDetFamAdic1=(Bnchf23ExpDetFamAdic)bnchf23ExpDetFamAdicList.get(i);
					
					bnchf23ExpDetFamAdic1.getId().setF23IdDetalle(new Long(""+(i+1)));
					
					bnchf23ExpDetFamAdic1.getId().getBnchf23ExpIngrFamAdic().getId().getBnchf23ExpIngresoFamiliar().getId().getBnchf13Expediente().setF13IdExpediente(bnchf13Expediente.getF13IdExpediente());
					
					bnchf23ExpDetFamAdic1.getId().getBnchf23ExpIngrFamAdic().getId().getBnchf23ExpIngresoFamiliar().getId().getBnchf01Persona().setF01IdPersona(bnchf23ExpIngresoFamiliar.getId().getBnchf01Persona().getF01IdPersona());
					
					bnchf23ExpDetFamAdic1.setF23IdUsuaCrea(bnchf13Expediente.getF13IdUsuaCrea());
					
					sqlMap.insert("sqlExpDetFamAdic.GuardaExpDetFamAdic",bnchf23ExpDetFamAdic1);
					}

					
					if(bnchf67DireccionPers.getF67DptoDirecc()!=null){
						if((bnchf67DireccionPers.getF67DptoDirecc().length()==4)||(bnchf67DireccionPers.getF67DptoDirecc().length()==5))bnchf67DireccionPers.setF67DptoDirecc(null);
						}
					
			
					if(bnchf67DireccionPers.getF67ProvDirecc()!=null)
					if((bnchf67DireccionPers.getF67ProvDirecc().length()==4)||(bnchf67DireccionPers.getF67ProvDirecc().length()==5))bnchf67DireccionPers.setF67ProvDirecc(null);
					
					
					if(bnchf67DireccionPers.getF67DistriDirecc()!=null)
					if((bnchf67DireccionPers.getF67DistriDirecc().length()==4)||(bnchf67DireccionPers.getF67DistriDirecc().length()==5))bnchf67DireccionPers.setF67DistriDirecc(null);
					
					bnchf67DireccionPers.getId().setF67IdDirecc(new Long(NextDireccionPer(bnchf67DireccionPers)));
					
					bnchf67DireccionPers.setF67IdUsuaCrea(bnchf13Expediente.getF13IdUsuaCrea());
					
					String  id="";
					
					try {					
						id=(String)sqlMap.queryForObject("sqlExpediente.EncontrarDireccionPer",bnchf67DireccionPers);					
					} catch (Exception e) {
						// TODO: handle exception
						id=null;
					}
					
					
					
					if(id==null){
						bnchf67DireccionPers.setF67TpoDirecc(new Long("2"));
						sqlMap.insert("sqlExpediente.GuardaDireccionPer",bnchf67DireccionPers);
					}else{					
						bnchf67DireccionPers.getId().setF67IdDirecc(new Long(""+id));
						sqlMap.update("sqlExpediente.ActualizarDireccionPer",bnchf67DireccionPers);
					}
					
						
					sqlMap.update("sqlExpediente.ActualizarExpedienteConsideraFamiliar",bnchf13Expediente);
					
					sqlMap.commitTransaction();
					
		} catch (Exception e) {
			
			logger.error("....error....>"+e);			
			// TODO: handle exception
			e.printStackTrace();
			throw e;
			
		}finally{
			sqlMap.endTransaction();	
		}


		return "";
	}
	
	
	public String  ActualizarIngresoConyugeBNNO(
			Bnchf13Expediente bnchf13Expediente,
			Bnchf23ExpIngresoFamiliar bnchf23ExpIngresoFamiliar,			
			List bnchf23ExpFamCuentasList ,
			List bnchf23ExpIngrFamAdicList,
			List bnchf23ExpFamCtaPeriodoList,
			List bnchf23ExpDetFamAdicList,
			Bnchf67DireccionPers bnchf67DireccionPers	
		)throws Exception{
		
		boolean exito=false;
		bnchf23ExpIngresoFamiliar.getId().getBnchf13Expediente().setF13IdExpediente(bnchf13Expediente.getF13IdExpediente());
		bnchf23ExpIngresoFamiliar.setF23IdUsuaCrea(bnchf13Expediente.getF13IdUsuaCrea());
		//String qryResult=(String)sqlMap.queryForObject("sqlExpIngresoFamiliar.VerificasiExisteCampo", bnchf23ExpIngresoFamiliar);
		Bnchf23ExpFamCtaPeriodo bnchf23ExpFamCtaPeriodo=new Bnchf23ExpFamCtaPeriodo();
		bnchf67DireccionPers=vacioBean(bnchf67DireccionPers);
		
		try{
					sqlMap.startTransaction();					
					Bnchf13Expediente Bnchf13Expediente=new Bnchf13Expediente();
					//id.bnchf23ExpIngrFamAdic.id.bnchf23ExpIngresoFamiliar.id.bnchf13Expediente.f13IdExpediente	  		
					Bnchf23ExpDetFamAdic bnchf23ExpDetFamAdic=new Bnchf23ExpDetFamAdic();
					bnchf23ExpDetFamAdic.getId().getBnchf23ExpIngrFamAdic().getId().getBnchf23ExpIngresoFamiliar().getId().getBnchf13Expediente().setF13IdExpediente(bnchf13Expediente.getF13IdExpediente());
					bnchf23ExpDetFamAdic.getId().getBnchf23ExpIngrFamAdic().getId().getBnchf23ExpIngresoFamiliar().getId().getBnchf01Persona().setF01IdPersona(bnchf23ExpIngresoFamiliar.getId().getBnchf01Persona().getF01IdPersona());
					sqlMap.delete("sqlExpDetFamAdic.EliminarExpDetFamAdic",bnchf23ExpDetFamAdic);
					//id.bnchf23ExpIngrFamAdic.id.bnchf23ExpIngresoFamiliar.id.bnchf13Expediente.f13IdExpediente
					bnchf23ExpFamCtaPeriodo.getId().setF23IdExpediente(bnchf13Expediente.getF13IdExpediente());
					bnchf23ExpFamCtaPeriodo.getId().setF23IdPersona(bnchf23ExpIngresoFamiliar.getId().getBnchf01Persona().getF01IdPersona());
					//id.f23IdExpediente
					sqlMap.delete("sqlExpFamCtaPeriodo.EliminarExpFamCtaPeriodo",bnchf23ExpFamCtaPeriodo);	 
					//id.bnchf23ExpIngresoFamiliar.id.bnchf13Expediente.f13IdExpediente
					Bnchf23ExpFamCuentas bnchf23ExpFamCuentas=new Bnchf23ExpFamCuentas();
					bnchf23ExpFamCuentas.getId().getBnchf23ExpIngresoFamiliar().getId().getBnchf13Expediente().setF13IdExpediente(bnchf13Expediente.getF13IdExpediente());
					bnchf23ExpFamCuentas.getId().setF23IdPersona(bnchf23ExpIngresoFamiliar.getId().getBnchf01Persona().getF01IdPersona());
					sqlMap.delete("sqlExpFamCuentas.EliminarExpFamCuentas",bnchf23ExpFamCuentas);
					//id.bnchf23ExpIngresoFamiliar.id.bnchf13Expediente.f13IdExpediente
					Bnchf23ExpIngrFamAdic bnchf23ExpIngrFamAdic=new Bnchf23ExpIngrFamAdic();
					bnchf23ExpIngrFamAdic.getId().getBnchf23ExpIngresoFamiliar().getId().getBnchf13Expediente().setF13IdExpediente(bnchf13Expediente.getF13IdExpediente());
					bnchf23ExpIngrFamAdic.getId().getBnchf23ExpIngresoFamiliar().getId().getBnchf01Persona().setF01IdPersona(bnchf23ExpIngresoFamiliar.getId().getBnchf01Persona().getF01IdPersona());
					
					sqlMap.delete("sqlExpIngrFamAdic.EliminarIngrFamAdic",bnchf23ExpIngrFamAdic);			
			
					sqlMap.delete("sqlExpIngresoFamiliar.EliminarIngresoFamiliar",bnchf23ExpIngresoFamiliar);					
					sqlMap.update("sqlExpediente.ActualizarDireccionPer",bnchf67DireccionPers);
				
					sqlMap.update("sqlExpediente.ActualizarExpedienteConsideraFamiliar",bnchf13Expediente);
					
					sqlMap.commitTransaction();
		}catch(Exception e){
			e.printStackTrace();
			throw e;
		}finally{
			sqlMap.endTransaction();
		}

		return "";
	}

	
	//encontrarDatosExpIngresoFamiliar
	//encontrarIdPersonaDelCliente


	public Bnchf23ExpIngresoFamiliar  EncontrarDatosExpIngresoFamiliar(Bnchf23ExpIngresoFamiliar bnchf23ExpIngresoFamiliar)throws Exception{
		
		Bnchf23ExpIngresoFamiliar bnchf23ExpIngresoFamiliarr=new Bnchf23ExpIngresoFamiliar();
		
		try {
			List li= sqlMap.queryForList("sqlExpIngresoFamiliar.encontrarDatosExpIngresoFamiliar",bnchf23ExpIngresoFamiliar);
			
				if(li!=null)
				bnchf23ExpIngresoFamiliarr=(Bnchf23ExpIngresoFamiliar)li.get(0);
				else
				bnchf23ExpIngresoFamiliarr=bnchf23ExpIngresoFamiliar;		
			
		} catch (Exception e) {
			logger.error(" Exception ::::>   "+e);
			bnchf23ExpIngresoFamiliarr=bnchf23ExpIngresoFamiliar;
			}
		return bnchf23ExpIngresoFamiliarr;
	} 

	public String RegistrarExpediente (
		    Bnchf13Expediente bnchf13Expediente,
		    Bnchf23ExpIngresoTitular bnchf23ExpIngresoTitular,
			List bnchf23ExpTitCuentasList,			
			List bnchf23ExpIngrTitAdicList,
			List bnchf23ExpTitCtaPeriodoList,
			List bnchf23ExpDetTitAdicList,			
			String servicio,
			String agencia,
			Bnchf67DireccionPers bnchf67DireccionPers
			)throws Exception{ 			
			Bnchf23ExpTitCuentas bnchf23ExpTitCuentas=new Bnchf23ExpTitCuentas();
			Bnchf23ExpIngrTitAdic bnchf23ExpIngrTitAdic=new Bnchf23ExpIngrTitAdic();
			Bnchf23ExpTitCtaPeriodo bnchf23ExpTitCtaPeriodo=new Bnchf23ExpTitCtaPeriodo();
			Bnchf23ExpDetTitAdic bnchf23ExpDetTitAdic=new Bnchf23ExpDetTitAdic();
			Bnchf65ExpCorrelativo bnchf65ExpCorrelativo=new Bnchf65ExpCorrelativo();
	
			bnchf65ExpCorrelativo.getId().setF65IdAgencia(""+agencia);
			bnchf65ExpCorrelativo.getId().setF65IdServicio(""+servicio); 
			bnchf65ExpCorrelativo.setF65IdUsuaCrea(bnchf13Expediente.getF13IdUsuaCrea());
			bnchf13Expediente.setF13Stdo(new Long(""+Constante.gBN_CONST_GENERADO));			
			bnchf13Expediente.setF13PartConyIngrFam(new Long(Constante.gBN_CONST_F13_PART_CONY_INGR_FAM));
			
			try {
							sqlMap.startTransaction();	
							
							
							bnchf13Expediente.setF13IdExpediente(NextCorrelativo(bnchf65ExpCorrelativo));//genera codigo
							sqlMap.insert("sqlExpediente.GuardaExpediente",bnchf13Expediente);
							bnchf23ExpIngresoTitular.setF23IdExpediente(bnchf13Expediente.getF13IdExpediente());
							//datos de auditoria 
							bnchf23ExpIngresoTitular.setF23UsrReg(bnchf13Expediente.getBnchf46UsuarioByF13UsrReg().getF46IdUsua()); //usuario que registra
							bnchf23ExpIngresoTitular.setF23IdUsuaCrea(bnchf13Expediente.getF13IdUsuaCrea());//campo aduditoria no sistema					
							sqlMap.insert("sqlExpIngresoTitular.GuardaExpIngresoTitular",bnchf23ExpIngresoTitular);					
							
							
							
							for (int i = 0; i < bnchf23ExpTitCuentasList.size(); i++) {
								bnchf23ExpTitCuentas=new Bnchf23ExpTitCuentas();
							 	bnchf23ExpTitCuentas=(Bnchf23ExpTitCuentas)bnchf23ExpTitCuentasList.get(i);			
								bnchf23ExpTitCuentas.getId().getBnchf23ExpIngresoTitular().setF23IdExpediente(bnchf13Expediente.getF13IdExpediente());
								/*campos de auditoria */  
								bnchf23ExpTitCuentas.setF23IdUsuaCrea(bnchf13Expediente.getF13IdUsuaCrea());
								sqlMap.insert("sqlExpTitCuentas.GuardaExpTitCuentas",bnchf23ExpTitCuentas);
							}
							
							for(int i = 0; i < bnchf23ExpIngrTitAdicList.size(); i++){
								bnchf23ExpIngrTitAdic=new Bnchf23ExpIngrTitAdic();
								bnchf23ExpIngrTitAdic=(Bnchf23ExpIngrTitAdic)bnchf23ExpIngrTitAdicList.get(i); 
								bnchf23ExpIngrTitAdic.getId().getBnchf13Expediente().setF13IdExpediente(bnchf13Expediente.getF13IdExpediente());				
								bnchf23ExpIngrTitAdic.setF23IdUsuaCrea(bnchf13Expediente.getF13IdUsuaCrea());
								//campos de auditoria 
								bnchf23ExpIngrTitAdic.setF23IdUsuaCrea(bnchf13Expediente.getF13IdUsuaCrea());
								sqlMap.insert("sqlExpIngrTitAdic.GuardaExpIngrTitAdic",bnchf23ExpIngrTitAdic);
							}  
							////////////////////////////////////////////////////////////////
							
							for (int i = 0; i < bnchf23ExpTitCtaPeriodoList.size(); i++) {
								bnchf23ExpTitCtaPeriodo=new Bnchf23ExpTitCtaPeriodo();
								bnchf23ExpTitCtaPeriodo=(Bnchf23ExpTitCtaPeriodo)bnchf23ExpTitCtaPeriodoList.get(i);
								bnchf23ExpTitCtaPeriodo.setF23IdUsuaCrea(bnchf13Expediente.getF13IdUsuaCrea());				
								bnchf23ExpTitCtaPeriodo.getId().setF23IdDetalle(new Long(""+i));
								bnchf23ExpTitCtaPeriodo.getId().getBnchf23ExpTitCuentas().getId().getBnchf23ExpIngresoTitular().setF23IdExpediente(bnchf13Expediente.getF13IdExpediente());
								sqlMap.insert("sqlExpTitCtaPeriodo.GuardaExpTitCtaPeriodo",bnchf23ExpTitCtaPeriodo);	
							}   
							
							for (int i = 0; i < bnchf23ExpDetTitAdicList.size(); i++) {
								bnchf23ExpDetTitAdic=new Bnchf23ExpDetTitAdic();
								bnchf23ExpDetTitAdic=(Bnchf23ExpDetTitAdic)bnchf23ExpDetTitAdicList.get(i);				
								bnchf23ExpDetTitAdic.getId().setF23IdDetalle(new Long(""+(i+1)));				
								bnchf23ExpDetTitAdic.getId().getBnchf23ExpIngrTitAdic().getId().getBnchf13Expediente().setF13IdExpediente(bnchf13Expediente.getF13IdExpediente());
								bnchf23ExpDetTitAdic.setF23IdUsuaCrea(bnchf13Expediente.getF13IdUsuaCrea());
								sqlMap.insert("sqlExpDetTitAdic.GuardaExpDetTitAdic",bnchf23ExpDetTitAdic);
							}
							
							bnchf67DireccionPers.getId().getBnchf01Persona().setF01IdPersona(new Long(encontrarIdPersonaDelCliente(bnchf13Expediente)));
							bnchf67DireccionPers.getId().setF67IdDirecc(new Long(NextDireccionPer(bnchf67DireccionPers)));
							bnchf67DireccionPers.setF67IdUsuaCrea(bnchf13Expediente.getF13IdUsuaCrea());
							
							
							String  id="";
							try {					
								id=(String)sqlMap.queryForObject("sqlExpediente.EncontrarDireccionPer",bnchf67DireccionPers);					
							} catch (Exception e) {
								// TODO: handle exception
								id=null;
							}
							if(id==null){
								sqlMap.insert("sqlExpediente.GuardaDireccionPer",bnchf67DireccionPers);
							}else{					
								bnchf67DireccionPers.getId().setF67IdDirecc(new Long(""+id));
								sqlMap.update("sqlExpediente.ActualizarDireccionPer",bnchf67DireccionPers);
							}
							
							//registramos en workflow
							Bnchf51VersionExpediente Bnchf51VersionExpediente=new Bnchf51VersionExpediente();
							Bnchf51VersionExpediente.getId().getBnchf13Expediente().setF13IdExpediente(bnchf13Expediente.getF13IdExpediente());
							Bnchf51VersionExpediente.getId().getBnchf41UnidadProc().setF41IdUnidProc(new Long("2"));//up
							Bnchf51VersionExpediente.setF51Version(new Long(""+Constante.gBN_CONST_VERSION_INICIAL));//siempre version 01
							Bnchf51VersionExpediente.setF51IdUsuaCrea(bnchf13Expediente.getF13IdUsuaCrea());//host
							  
							sqlMap.insert("sqlExpediente.GuardaVersionExpediente",Bnchf51VersionExpediente);
							Bnchf52Movimiento bnchf52Movimiento=new Bnchf52Movimiento();
							bnchf52Movimiento.getId().getBnchf13Expediente().setF13IdExpediente(bnchf13Expediente.getF13IdExpediente());//add id expediente
							bnchf52Movimiento.getId().setF52IdMovimiento(new Long(""+NextMovimiento(bnchf52Movimiento)));
							bnchf52Movimiento.getId().getBnchf13Expediente().setF13IdExpediente(bnchf13Expediente.getF13IdExpediente());
							bnchf52Movimiento.getBnchf42ActividadBySysC008317().getId().getBnchf41UnidadProc().setF41IdUnidProc(new Long(Constante.gBN_CONST_UNIDAD_DE_PROCESAMIENTO_INICIAL));//up
							bnchf52Movimiento.getBnchf42ActividadBySysC008317().getId().setF42IdActividad(new Long(Constante.gBN_CONST_ACTIVIDAD_INICIAL));//actividad
							bnchf52Movimiento.getBnchf46UsuarioByF52UsuaIni().setF46IdUsua(bnchf13Expediente.getBnchf46UsuarioByF13UsrReg().getF46IdUsua());//usuario ini
							bnchf52Movimiento.getBnchf42ActividadBySysC008318().getId().getBnchf41UnidadProc().setF41IdUnidProc(new Long(Constante.gBN_CONST_UNIDAD_DE_PROCESAMIENTO_FIN));//up
							bnchf52Movimiento.getBnchf42ActividadBySysC008318().getId().setF42IdActividad(new Long(Constante.gBN_CONST_ACTIVIDAD_FIN));//actividad
						 	bnchf52Movimiento.getBnchf46UsuarioByF52UsuaFin().setF46IdUsua(bnchf13Expediente.getBnchf46UsuarioByF13UsrReg().getF46IdUsua());//usuario fin   1
							bnchf52Movimiento.setF52EstdoMov(new Long(Constante.gBN_CONST_POR_TRABAJAR));
							bnchf52Movimiento.setF52Version(new Long(Constante.gBN_CONST_VERSION_INICIAL));
							bnchf52Movimiento.setF52IdUsuaCrea(bnchf13Expediente.getF13IdUsuaCrea());//coidigo host
							sqlMap.insert("sqlExpediente.GuardaMovimiento",bnchf52Movimiento);			
							Bnchf51BandejaTrab bnchf51BandejaTrab=new Bnchf51BandejaTrab();
							bnchf51BandejaTrab.setF51IdExpediente(bnchf13Expediente.getF13IdExpediente());
							bnchf51BandejaTrab.getBnchf42Actividad().getId().getBnchf41UnidadProc().setF41IdUnidProc(new Long(Constante.gBN_CONST_UNIDAD_DE_PROCESAMIENTO_FIN));
							bnchf51BandejaTrab.getBnchf42Actividad().getId().setF42IdActividad(new Long(""+Constante.gBN_CONST_ACTIVIDAD_FIN));//ojo es importante
							bnchf51BandejaTrab.setF51IdMovto(new Long(""+bnchf52Movimiento.getId().getF52IdMovimiento()));
							bnchf51BandejaTrab.getBnchf46UsuarioByF51IdUsuaMov().setF46IdUsua(bnchf13Expediente.getBnchf46UsuarioByF13UsrReg().getF46IdUsua());//usuario de movimeinto
							bnchf51BandejaTrab.getBnchf46UsuarioByF51IdUsuaTrab().setF46IdUsua(bnchf13Expediente.getBnchf46UsuarioByF13UsrReg().getF46IdUsua());//usuario de trabajo
							//bnchf46UsuarioByF13UsrReg.f46IdUsua
							bnchf51BandejaTrab.setF51IdUsuaCrea(bnchf13Expediente.getF13IdUsuaCrea());//id host
							bnchf51BandejaTrab.setF51IdExpediente(bnchf13Expediente.getF13IdExpediente());
							sqlMap.insert("sqlExpediente.GuardaBandejaTrab",bnchf51BandejaTrab);
		 
							//sqlMap.executeBatch();
							sqlMap.commitTransaction();
			   
			}catch(Exception e){
				e.printStackTrace();
				throw e;
			}
			finally {
			   sqlMap.endTransaction();
			 }
			 	return bnchf13Expediente.getF13IdExpediente();
	}
	public String ModificarExpediente (
		    Bnchf13Expediente bnchf13Expediente,
		    Bnchf23ExpIngresoTitular bnchf23ExpIngresoTitular,
			List bnchf23ExpTitCuentasList,			
			List bnchf23ExpIngrTitAdicList,
			List bnchf23ExpTitCtaPeriodoList,
			List bnchf23ExpDetTitAdicList,			
			String servicio,
			String agencia,
			Bnchf67DireccionPers bnchf67DireccionPers
			)throws Exception{ 
			
			Bnchf23ExpTitCuentas bnchf23ExpTitCuentas=new Bnchf23ExpTitCuentas();
			Bnchf23ExpIngrTitAdic bnchf23ExpIngrTitAdic=new Bnchf23ExpIngrTitAdic();
			Bnchf23ExpTitCtaPeriodo bnchf23ExpTitCtaPeriodo=new Bnchf23ExpTitCtaPeriodo();
			Bnchf23ExpDetTitAdic bnchf23ExpDetTitAdic=new Bnchf23ExpDetTitAdic();
			Bnchf65ExpCorrelativo bnchf65ExpCorrelativo=new Bnchf65ExpCorrelativo();
			bnchf65ExpCorrelativo.getId().setF65IdAgencia(""+agencia); 
			bnchf65ExpCorrelativo.getId().setF65IdServicio(""+servicio); 
			bnchf65ExpCorrelativo.setF65IdUsuaCrea(bnchf13Expediente.getF13IdUsuaCrea());
			bnchf13Expediente.setF13Stdo(new Long(""+Constante.gBN_CONST_GENERADO));
			String id="";
		
			bnchf23ExpIngresoTitular.setF23IdExpediente(bnchf13Expediente.getF13IdExpediente());			
			id=(String)sqlMap.queryForObject("sqlExpIngresoTitular.VerificasiExisteCampo",bnchf23ExpIngresoTitular);
			if(bnchf67DireccionPers.getF67DptoDirecc()!=null)
			if(bnchf67DireccionPers.getF67DptoDirecc().length()==4)bnchf67DireccionPers.setF67DptoDirecc(null);
			
			if(bnchf67DireccionPers.getF67ProvDirecc()!=null)
			if(bnchf67DireccionPers.getF67ProvDirecc().length()==4)bnchf67DireccionPers.setF67ProvDirecc(null);
			
			if(bnchf67DireccionPers.getF67DistriDirecc()!=null)
			if(bnchf67DireccionPers.getF67DistriDirecc().length()==4)bnchf67DireccionPers.setF67DistriDirecc(null);
			
			
			try {
						sqlMap.startTransaction();
						//sqlMap.delete("sqlExpediente.EliminarDireccionPer",bnchf67DireccionPers);			
						bnchf23ExpDetTitAdic.getId().getBnchf23ExpIngrTitAdic().getId().getBnchf13Expediente().setF13IdExpediente(bnchf13Expediente.getF13IdExpediente());
						sqlMap.delete("sqlExpDetTitAdic.EliminarExpDetTitAdic",bnchf23ExpDetTitAdic);				
						bnchf23ExpIngrTitAdic.getId().getBnchf13Expediente().setF13IdExpediente(bnchf13Expediente.getF13IdExpediente());
						sqlMap.delete("sqlExpIngrTitAdic.EliminarExpIngrTitAdic",bnchf23ExpIngrTitAdic);
						bnchf23ExpTitCtaPeriodo.getId().getBnchf23ExpTitCuentas().getId().getBnchf23ExpIngresoTitular().setF23IdExpediente(bnchf13Expediente.getF13IdExpediente());
						sqlMap.delete("sqlExpTitCtaPeriodo.EliminarExpTitCtaPeriodo",bnchf23ExpTitCtaPeriodo);
						bnchf23ExpTitCuentas.getId().getBnchf23ExpIngresoTitular().setF23IdExpediente(bnchf13Expediente.getF13IdExpediente());
						sqlMap.delete("sqlExpTitCuentas.EliminarExpTitCuentas",bnchf23ExpTitCuentas);				
						bnchf23ExpIngresoTitular.setF23IdExpediente(bnchf13Expediente.getF13IdExpediente());
						
						bnchf23ExpIngresoTitular.setF23IdExpediente(bnchf13Expediente.getF13IdExpediente());
						bnchf23ExpIngresoTitular.setF23UsrReg(bnchf13Expediente.getBnchf46UsuarioByF13UsrReg().getF46IdUsua()); //usuario que registra					
						bnchf23ExpIngresoTitular.setF23IdUsuaCrea(bnchf13Expediente.getF13IdUsuaCrea());//campo aduditoria no sistema						
						bnchf13Expediente.setF13IdUsuaModi(bnchf13Expediente.getF13IdUsuaCrea());
						
						sqlMap.update("sqlExpediente.ActualizarExpediente",bnchf13Expediente);
						if(id==null || id.equals("0")){
							
							sqlMap.insert("sqlExpIngresoTitular.GuardaExpIngresoTitular",bnchf23ExpIngresoTitular);	
						}else{
							sqlMap.update("sqlExpIngresoTitular.ActualizaExpIngresoTitular",bnchf23ExpIngresoTitular);
							 
						}
						//pregunta si exite ingreso del titular
								  
						for (int i = 0; i < bnchf23ExpTitCuentasList.size(); i++) {
							
							bnchf23ExpTitCuentas=new Bnchf23ExpTitCuentas();
						 	bnchf23ExpTitCuentas=(Bnchf23ExpTitCuentas)bnchf23ExpTitCuentasList.get(i);			
						 	
							bnchf23ExpTitCuentas.getId().getBnchf23ExpIngresoTitular().setF23IdExpediente(bnchf13Expediente.getF13IdExpediente());
							
							bnchf23ExpTitCuentas.setF23IdUsuaCrea(bnchf13Expediente.getF13IdUsuaCrea());
							sqlMap.insert("sqlExpTitCuentas.GuardaExpTitCuentas",bnchf23ExpTitCuentas);
						}
						for(int i = 0; i < bnchf23ExpIngrTitAdicList.size(); i++){
							
							bnchf23ExpIngrTitAdic=new Bnchf23ExpIngrTitAdic();
							bnchf23ExpIngrTitAdic=(Bnchf23ExpIngrTitAdic)bnchf23ExpIngrTitAdicList.get(i); 
							bnchf23ExpIngrTitAdic.getId().getBnchf13Expediente().setF13IdExpediente(bnchf13Expediente.getF13IdExpediente());				
							bnchf23ExpIngrTitAdic.setF23IdUsuaCrea(bnchf13Expediente.getF13IdUsuaCrea());
							//campos de auditoria
							bnchf23ExpIngrTitAdic.setF23IdUsuaCrea(bnchf13Expediente.getF13IdUsuaCrea());
							sqlMap.insert("sqlExpIngrTitAdic.GuardaExpIngrTitAdic",bnchf23ExpIngrTitAdic);
						}  
						
						////////////////////////////////////////////////////////////////
										
						for (int i = 0; i < bnchf23ExpTitCtaPeriodoList.size(); i++) {
							bnchf23ExpTitCtaPeriodo=new Bnchf23ExpTitCtaPeriodo();
							bnchf23ExpTitCtaPeriodo=(Bnchf23ExpTitCtaPeriodo)bnchf23ExpTitCtaPeriodoList.get(i);
							bnchf23ExpTitCtaPeriodo.setF23IdUsuaCrea(bnchf13Expediente.getF13IdUsuaCrea());				
							bnchf23ExpTitCtaPeriodo.getId().setF23IdDetalle(new Long(""+(i+1)));
							bnchf23ExpTitCtaPeriodo.getId().getBnchf23ExpTitCuentas().getId().getBnchf23ExpIngresoTitular().setF23IdExpediente(bnchf13Expediente.getF13IdExpediente());
							sqlMap.insert("sqlExpTitCtaPeriodo.GuardaExpTitCtaPeriodo",bnchf23ExpTitCtaPeriodo);	
						}   
						for (int i = 0; i < bnchf23ExpDetTitAdicList.size(); i++) {
							bnchf23ExpDetTitAdic=new Bnchf23ExpDetTitAdic();
							
							bnchf23ExpDetTitAdic=(Bnchf23ExpDetTitAdic)bnchf23ExpDetTitAdicList.get(i);				
							bnchf23ExpDetTitAdic.getId().setF23IdDetalle(new Long(""+(i+1)));				
							bnchf23ExpDetTitAdic.getId().getBnchf23ExpIngrTitAdic().getId().getBnchf13Expediente().setF13IdExpediente(bnchf13Expediente.getF13IdExpediente());
							bnchf23ExpDetTitAdic.setF23IdUsuaCrea(bnchf13Expediente.getF13IdUsuaCrea());
							sqlMap.insert("sqlExpDetTitAdic.GuardaExpDetTitAdic",bnchf23ExpDetTitAdic);
	
						}
						bnchf67DireccionPers.getId().setF67IdDirecc(new Long(NextDireccionPer(bnchf67DireccionPers)));
						bnchf67DireccionPers.setF67IdUsuaCrea(bnchf13Expediente.getF13IdUsuaCrea());
						String  id1="";
						try {					
							id1=(String)sqlMap.queryForObject("sqlExpediente.EncontrarDireccionPer",bnchf67DireccionPers);					
						} catch (Exception e) {
							// TODO: handle exception
							id1=null;
						}  
						if(id1==null){
							sqlMap.insert("sqlExpediente.GuardaDireccionPer",bnchf67DireccionPers);
						}else{					
							bnchf67DireccionPers.getId().setF67IdDirecc(new Long(""+id1));
							sqlMap.update("sqlExpediente.ActualizarDireccionPer",bnchf67DireccionPers);
						}					
						sqlMap.commitTransaction();
			 }
			catch(Exception e){
				e.printStackTrace();
				throw e;
			}
			finally {
			   sqlMap.endTransaction();
			   
			 }
			 	return bnchf13Expediente.getF13IdExpediente();
	}
	

	public List listExpediente(Bnchf13Expediente bnchf13Expediente) throws Exception,SQLException{
	

		try {
			return sqlMap.queryForList("sqlExpediente.buscarExpediente",bnchf13Expediente);	
		} catch (Exception e) {
			// TODO: handle exception
			logger.error("			Exception      			"+e);	
			 
			return null;
		}
		
	}
	public Bnchf13Expediente datosExpediente(String idExpediente) throws Exception,SQLException{
		
		Bnchf13Expediente bnchf13Expediente=new Bnchf13Expediente();
		bnchf13Expediente.setF13IdExpediente(idExpediente);

		
		try {
			return (Bnchf13Expediente)sqlMap.queryForList("sqlExpediente.datosExpediente",bnchf13Expediente).get(0);	
		} catch (Exception e) {
			// TODO: handle exception
			logger.error("			Exception      			"+e);	
			 
			return null;
		}
		
	}
	/*DatosCorreo*/
	
	
	public Bnchf13Expediente datosCorreo(String idExpediente) throws Exception,SQLException{
		
		Bnchf13Expediente bnchf13Expediente=new Bnchf13Expediente();
		bnchf13Expediente.setF13IdExpediente(idExpediente);

		  
		try {
			return (Bnchf13Expediente)sqlMap.queryForList("sqlExpediente.DatosCorreo",bnchf13Expediente).get(0);	
		} catch (Exception e) {
			// TODO: handle exception
			logger.error("			Exception      			"+e);	
			return null;
		}
		}
	
	
	public Bnchf13Expediente datoBasicosExpediente(Bnchf13Expediente bnchf13Expediente) throws Exception,SQLException{
		//return sqlMap.queryForList("sqlExpediente.buscarExpediente",bnchf13Expediente);
		List arr=new ArrayList();
		try {

			arr=sqlMap.queryForList("sqlExpediente.datosBasicosExpediente",bnchf13Expediente);
			bnchf13Expediente=(Bnchf13Expediente)arr.get(0);
			return bnchf13Expediente;

		} catch (Exception e) {
			// TODO: handle exception
			
			logger.error("Exception e"+e);
			
			return null;
		}
	} 

	public Bnchf13Expediente datosComplExpediente(Bnchf13Expediente bnchf13Expediente) throws Exception,SQLException{
		List arr=new ArrayList();
		try {
			arr=sqlMap.queryForList("sqlExpediente.datosComplExpediente",bnchf13Expediente);
			bnchf13Expediente=(Bnchf13Expediente)arr.get(0);
			
		} catch (Exception e) {
			// TODO: handle exception
			logger.error("Exception e "+e);
			return null;
		}
		return bnchf13Expediente;
	} 
	
	
	public String NextCorrelativo(Bnchf65ExpCorrelativo bnchf65ExpCorrelativo) throws Exception{
		
		
	       try {      
	       	
	       		
	    	    String id = (String)sqlMap.queryForObject("sqlCorrelativo.NextCorrelativo",bnchf65ExpCorrelativo);
	    	    // id 12 digitos
	    	    
	            if(id ==null){ 
	            	id=bnchf65ExpCorrelativo.getId().getF65IdServicio()+""+bnchf65ExpCorrelativo.getId().getF65IdAgencia()+"000001";
	            	bnchf65ExpCorrelativo.setF65ValCorre("000001");
	            	sqlMap.insert("sqlCorrelativo.GuardaCorrelativo",bnchf65ExpCorrelativo);
	            }else {  
	            	bnchf65ExpCorrelativo.setF65ValCorre(id.substring(6,12));
	            	bnchf65ExpCorrelativo.setF65IdUsuaModi(""+bnchf65ExpCorrelativo.getF65IdUsuaCrea());
	            	sqlMap.update("sqlCorrelativo.ActualizaCorrelativo",bnchf65ExpCorrelativo); 
	            } 
	            
	        
	             return id;
	        } catch (Exception e) {
	        	
	        	throw new Exception("Error en generar codigo expediente: " + e);
	        }
	        
	        
	}
	

	
	
	
	
	
	public String getIdConyuge(Long IdCliente) throws Exception{
		Bnchf13Expediente bnchf13Expediente=new Bnchf13Expediente();		
	   bnchf13Expediente.getBnchf02Cliente().setF02IdCliente(IdCliente);
       try {      
    	    String idClienteConyuge = (String)sqlMap.queryForObject("sqlExpediente.getIdConyuge",bnchf13Expediente);	    	    
            if(idClienteConyuge ==null){
            	idClienteConyuge="0";
            }
            return idClienteConyuge;
        } catch (Exception e) {
            throw new Exception("Error en generar codigo expediente: " + e);
     
        }
	}
/*
 *
 * encontrarFamiliaresClienteEnExpediente
 *  */
	//retorna cantidad de persona familiares ene expediente 
	//parametro de ingreso el idpersona del familiar 
	public String encontrarFamiliaresClienteEnExpediente (Long IPersonaFamiliar ) throws Exception{
		Bnchf13Expediente bnchf13Expediente=new Bnchf13Expediente();
		bnchf13Expediente.getBnchf01Persona().setF01IdPersona(IPersonaFamiliar);
       try {      
    	    String idClienteConyuge = (String)sqlMap.queryForObject("sqlExpediente.encontrarFamiliaresClienteEnExpediente",bnchf13Expediente);	    	    
            if(idClienteConyuge ==null){
            	idClienteConyuge="0";
            }
            return idClienteConyuge;
        } catch (Exception e) {
            throw new Exception("Error en generar codigo expediente: " + e);
        }
	}

	
	public String encontrarClienteFamiliar (Long IdCliente ) throws Exception{
			Bnchf13Expediente bnchf13Expediente=new Bnchf13Expediente();
			bnchf13Expediente.getBnchf02Cliente().setF02IdCliente(IdCliente);
	       try {      
	    	    String idClienteConyuge = (String)sqlMap.queryForObject("sqlExpediente.encontrarClienteFamiliar",bnchf13Expediente);	    	    
	            if(idClienteConyuge ==null){
	            	idClienteConyuge="0";
	            }
	            return idClienteConyuge;
	        } catch (Exception e) {
	            throw new Exception("Error en generar codigo expediente: " + e);
	        }
	}  
	//encontrarClienteEnExpediente   
	public String encontrarClienteEnExpediente (Long IdCliente ) throws Exception{
			Bnchf13Expediente bnchf13Expediente=new Bnchf13Expediente();
			bnchf13Expediente.getBnchf02Cliente().setF02IdCliente(IdCliente);
		    try {      
	           String id = (String)sqlMap.queryForObject("sqlExpediente.encontrarClienteEnExpediente",bnchf13Expediente);	    	    
	            if(id ==null){
	            	id="0";
	            }
	            return id;
	        } catch (Exception e) {
	            throw new Exception("Error en generar codigo expediente: " + e);
	        }
	}
	
	public String verificarClienteFamiliar(Long cliente) throws Exception{
		
		Bnchf02Cliente bnchf02Cliente=new Bnchf02Cliente();
		Bnchf13Expediente bnchf13Expediente=new Bnchf13Expediente();
		bnchf13Expediente.getBnchf02Cliente().setF02IdCliente(cliente);
		
		
		
	       try {     
	    	    String id = (String)sqlMap.queryForObject("sqlExpediente.verificaClienteFamiliar",bnchf13Expediente);
	    	   
	            return id;
	        } catch (Exception e) {
	        	 
	        	logger.error("Exception "+e);
	            return null;
	        }
	}
	
	
	

	
	public String encontrarIdPersonaDelCliente(Bnchf13Expediente bnchf13Expediente) throws Exception{
		
	       try {      
	    	    String id = (String)sqlMap.queryForObject("sqlExpediente.encontrarIdPersonaDelCliente",bnchf13Expediente);	    	    
	            return id;
	        } catch (Exception e) {
	            throw new Exception("Error en generar codigo expediente: " + e);	             
	        }
	}
	
	//ConstanteServicioHipotecario

	public String constanteServicioHipotecario() throws Exception{
	       
		
			try {
				
	    	    String id = (String)sqlMap.queryForObject("sqlExpediente.ConstanteServicioHipotecario");
	    	    return id;
	        } catch (Exception e) {
	            throw new Exception("Error en generar codigo expediente: " + e);
	        }
	}
	
	public String NextDireccionPer(Bnchf67DireccionPers bnchf67DireccionPers) throws Exception{
	       try {      
	    	    String id = (String)sqlMap.queryForObject("sqlExpediente.NextDireccionPer",bnchf67DireccionPers);	    	    
	            if(id ==null){
	            	id="01";
	            }
	            return id;
	        } catch (Exception e) {
	            throw new Exception("Error en generar codigo expediente: " + e);
	        }
	}
	public String NextInmueble(Bnchf35Inmueble bnchf35Inmueble) throws Exception{
	       try {      
	    	    String id = (String)sqlMap.queryForObject("sqlInmueble.NextInmueble",bnchf35Inmueble);	    	    
	            if(id ==null){
	            	id="01";
	            }
	            return id;
	        } catch (Exception e) {
	            throw new Exception("Error en generar codigo expediente: " + e);
	        }
	} 
//next observaioens
	
	
	public List listObservaciones(Bnchf05Observaciones bnchf05Observaciones) throws Exception{ 
		//Bnchf05Observaciones		
		return (List)sqlMap.queryForList("sqlBnchf05Observaciones.buscarObservaciones",bnchf05Observaciones);
	}
	
	public String NextObservaciones(Bnchf05Observaciones bnchf05Observaciones) throws Exception{
	       try {      
	    	    String id = (String)sqlMap.queryForObject("sqlBnchf05Observaciones.NextObservaciones",bnchf05Observaciones);	    	    
	            if(id ==null){
	            	id="1";
	            } 
	            return id;
	        } catch (Exception e) {
	            throw new Exception("Error en generar codigo observaion: " + e);
	        }
	} 
	

	

	public String NextMovimiento(Bnchf52Movimiento Bnchf52Movimiento) throws Exception{
	       try {      
	    	    String id = (String)sqlMap.queryForObject("sqlMovimiento52.MaxIdMovimiento");  	    	    
	            if(id ==null){
	            	id="1";
	            }  
	            return id;
	        } catch (Exception e) {
	            throw new Exception("Error en generar codigo expediente: " + e);
	        }
	}
	
 

	   
	public String BajarExpediente(String f13IdExpediente,Bnchf05Observaciones bnchf05Observaciones,DatosSesion datosSesion)throws Exception{
		int rs=0;
		Bnchf51BandejaTrab bnchf51BandejaTrab=new Bnchf51BandejaTrab();
		Bnchf13Expediente bnchf13Expediente=new  Bnchf13Expediente();
		
		bnchf13Expediente.setF13IdExpediente(f13IdExpediente);
     
     	bnchf05Observaciones.getId().getBnchf13Expediente().setF13IdExpediente(f13IdExpediente);    	
     	bnchf05Observaciones.getId().getBnchf41UnidadProc().setF41IdUnidProc(new Long(Constante.gBN_CONST_UNIDAD_DE_PROCESAMIENTO_INICIAL));
		bnchf05Observaciones.setF05IdUsuaCrea(datosSesion.getCodigoHost());
     	bnchf05Observaciones.setF05IdUsrInst(Util.copyLongc(datosSesion.getCodigoUsuario()));
     	bnchf05Observaciones.setF05IdUsuaModi((datosSesion.getCodigoUsuario()));
     	bnchf13Expediente=(Bnchf13Expediente)sqlMap.queryForList("sqlExpediente.datosExpediente",bnchf13Expediente).get(0);
     
     	
      	
        bnchf13Expediente.getBnchf42Actividad().getId().getBnchf41UnidadProc().setF41IdUnidProc(bnchf13Expediente.getBnchf42Actividad().getId().getBnchf41UnidadProc().getF41IdUnidProc());//donde esta el expediente
        bnchf13Expediente.getBnchf42Actividad().getId().setF42IdActividad(bnchf13Expediente.getBnchf42Actividad().getId().getF42IdActividad());//donde esta la actividad
         bnchf13Expediente.getBnchf46UsuarioByF13UsrReg().setF46IdUsua(new Long(datosSesion.getCodigoUsuario())); // id reg usuario 
        bnchf13Expediente.getBnchf46UsuarioByF13UsrReg().setF46IdUsuaCrea(datosSesion.getCodigoHost());//
        	
        
        try {

        	
        	sqlMap.startTransaction();	
    		bnchf05Observaciones.getId().setF05IdObserv(new Long(""+NextObservaciones(bnchf05Observaciones)));
    		sqlMap.insert("sqlBnchf05Observaciones.insertObservaciones",bnchf05Observaciones);
    		//Paso 1 encontrar movimiento  
    		bnchf51BandejaTrab.getBnchf13Expediente().setF13IdExpediente(bnchf13Expediente.getF13IdExpediente());
    		bnchf51BandejaTrab=(Bnchf51BandejaTrab)sqlMap.queryForList("sqlBandeja.encontrarMovExpediente",bnchf51BandejaTrab).get(0);
    		Bnchf52Movimiento bnchf52Movimiento=new Bnchf52Movimiento();		
    		bnchf52Movimiento.getId().setF52IdMovimiento(bnchf51BandejaTrab.getF51IdMovto());	
    		//	Paso 2 encontrar movimiento 		
    		bnchf52Movimiento.getId().setF52IdMovimiento(bnchf51BandejaTrab.getF51IdMovto());
    		bnchf52Movimiento.getId().getBnchf13Expediente().setF13IdExpediente(bnchf13Expediente.getF13IdExpediente());
    		//id.bnchf13Expediente.f13IdExpediente  updatemovimientomov
    		bnchf52Movimiento.setF52EstdoMov(new Long("2"));				  
    		sqlMap.update("sqlMovimiento52.updatemovimientomov",bnchf52Movimiento);
    		//id.bnchf13Expediente.f13IdExpediente
    		bnchf52Movimiento.getId().getBnchf13Expediente().setF13IdExpediente(bnchf13Expediente.getF13IdExpediente());
    		bnchf52Movimiento.getId().setF52IdMovimiento(new Long(""+NextMovimiento(bnchf52Movimiento)));
    		
    		bnchf52Movimiento.getId().getBnchf13Expediente().setF13IdExpediente(bnchf13Expediente.getF13IdExpediente());		
    		bnchf52Movimiento.getId().getBnchf13Expediente().setF13IdExpediente(bnchf13Expediente.getF13IdExpediente());
    		//INI		
    		bnchf52Movimiento.getBnchf42ActividadBySysC008317().getId().getBnchf41UnidadProc().setF41IdUnidProc(bnchf13Expediente.getBnchf42Actividad().getId().getBnchf41UnidadProc().getF41IdUnidProc());
    		bnchf52Movimiento.getBnchf42ActividadBySysC008317().getId().setF42IdActividad(bnchf13Expediente.getBnchf42Actividad().getId().getF42IdActividad());
    		
    		bnchf52Movimiento.getBnchf46UsuarioByF52UsuaIni().setF46IdUsua(bnchf13Expediente.getBnchf46UsuarioByF13UsrReg().getF46IdUsua());//FIN		
    		bnchf52Movimiento.getBnchf42ActividadBySysC008318().getId().getBnchf41UnidadProc().setF41IdUnidProc(new Long("1"));
    		bnchf52Movimiento.getBnchf42ActividadBySysC008318().getId().setF42IdActividad(new Long("2"));
    		bnchf52Movimiento.getBnchf46UsuarioByF52UsuaFin().setF46IdUsua(bnchf13Expediente.getBnchf46UsuarioByF13UsrReg().getF46IdUsua());
    		bnchf52Movimiento.setF52Version(new Long("1"));
    		bnchf52Movimiento.setF52IdUsuaCrea(""+bnchf13Expediente.getBnchf46UsuarioByF13UsrReg().getF46IdUsuaCrea());
    		bnchf52Movimiento.setF52EstdoMov(new Long("4"));
    		
    		sqlMap.insert("sqlMovimiento52.GuardaMovimiento52Baja",bnchf52Movimiento);
    		sqlMap.update("sqlExpediente.BajarExpediente",bnchf13Expediente); 
    		//
    		//BajarExpediente
    		sqlMap.commitTransaction(); 
       }catch(Exception e){
        	e.printStackTrace();
        	throw e;
        }finally{
        	sqlMap.endTransaction();
        }
///		sqlMap.endTransaction();
		return rs+""; 		
	}

	public Bnchf13Expediente EncontrarExpediente(Bnchf13Expediente bnchf13Expediente)throws Exception{
		try {
			
			List li=sqlMap.queryForList("sqlExpediente.encontrarExpediente",bnchf13Expediente);
			bnchf13Expediente=(Bnchf13Expediente)li.get(0);
			
					
			return bnchf13Expediente;
		} catch (Exception e) {
			// TODO: handle exception
			logger.error("Exception   "+e);
			return null;	
		}
	}
	
	
	// PARA BUSCAR DET ALLES DE EXPEIDIENTE 
	// lista para optner expediente ingreso titular
	public List optenerExpIngrTitAdicList( Bnchf23ExpIngrTitAdic bnchf23ExpIngrTitAdic) throws Exception{
		return sqlMap.queryForList("sqlExpIngrTitAdic.encontrarExpIngrTitAdic",bnchf23ExpIngrTitAdic);
	}
	 
	// lista para optner expediente detalle ingreso titular
	public List optenerExpDetTitAdicList( Bnchf23ExpDetTitAdic bnchf23ExpDetTitAdic) throws Exception{
		
		return sqlMap.queryForList("sqlExpDetTitAdic.encontrarExpDetTitAdic",bnchf23ExpDetTitAdic);
	}
	// lista para optner expediente titular cuentas
	public List optenerExpTitCuentasList( Bnchf23ExpTitCuentas	bnchf23ExpTitCuentas) throws Exception{
		return sqlMap.queryForList("sqlExpTitCuentas.encontrarExpTitCuentas",bnchf23ExpTitCuentas);
	}
	// lista para optner expediente titular cuenta periodo
	public List optenerExpTitCtaPeriodoList( Bnchf23ExpTitCtaPeriodo	bnchf23ExpTitCtaPeriodo) throws Exception{
		return sqlMap.queryForList("sqlExpTitCtaPeriodo.encontrarExpTitCtaPeriodo",bnchf23ExpTitCtaPeriodo);
	}

	// lista para optner expediente titular cuenta periodo
	public List bnchf54ParametroProductoList( Bnchf54ParametroProducto	bnchf54ParametroProducto) throws Exception{
		return sqlMap.queryForList("sqlParametroProducto.buscarParametroProducto",bnchf54ParametroProducto);
	}

	/*lista de req del titular */
	
	
		public List ListaParamReqsTit() throws Exception{
			return sqlMap.queryForList("sqlExpediente.listaParamReqsTit");
		}
	
	
	// lista para optner expediente titular cuenta periodo
	
	
	public Bnchf54ParametroProducto encontrarParametroProducto( Bnchf54ParametroProducto	bnchf54ParametroProducto) throws Exception{
		return (Bnchf54ParametroProducto)sqlMap.queryForList("sqlParametroProducto.encontrarParametroProducto",bnchf54ParametroProducto).get(0);
	}
	// encuentra dicrrein perons
	public Bnchf67DireccionPers encontrarDirecionPersona(Bnchf67DireccionPers Bnchf67DireccionPers)throws Exception{
		try {
			return (Bnchf67DireccionPers)sqlMap.queryForList("sqlExpediente.encontrarDireccionPersona",Bnchf67DireccionPers).get(0);	
		} catch (Exception e) {
			// TODO: handle exception
			return null;
		}
	}
	
	
	/*encontrarFamiliaresClienteEnExpedienteProceso*/
	public String getIdPersona(Long IdCliente) throws Exception{
		
	   Bnchf13Expediente bnchf13Expediente=new Bnchf13Expediente();		
	   bnchf13Expediente.getBnchf02Cliente().setF02IdCliente(IdCliente);
       try {      
    	    String idClienteConyuge = (String)sqlMap.queryForObject("sqlExpediente.getIdPersona",bnchf13Expediente);	    	    
            if(idClienteConyuge ==null){
            	idClienteConyuge="0";
            }
            return idClienteConyuge;
        } catch (Exception e) {
            throw new Exception("Error en generar codigo expediente: " + e);
        }
	}
	
	public List reporteEstado(BnchfReporte bnchfReporte) throws Exception{
		return sqlMap.queryForList("sqlExpediente.reporteEstado", bnchfReporte);
	}
	
	
 
}
